The task of generating optimized schedules for contact center agents and other related resources has been known for years to be a complex one, and has spawned an entire industry of companies which provide products, of varying sophistication, which attempt to provide optimal resource scheduling for contact centers. Known as workforce management systems, the products known in the art generally perform a common series of sequential tasks in order to accomplish the scheduling function. Referring to FIG. 1, the first step of workforce management is to gather historical data on call volumes 100 for the contact centers in question; this data is generally broken out by call activities or skills, such as sales, service, complaints, etc. Data 101 is also obtained, similarly segregated by activity or skill, for the average handling time of calls, which is the total time a call takes within the contact center from start to completion (which is usually defined as the time when the agent who handled the call last completes any call-related work after the caller is released). Note that “call” as used in discussing the present invention can be a traditional phone call carried by the public switched telephone network (PSTN), a voice-over-IP (VoIP) call, an e-mail, or any other customer interaction arriving at or commencing in a contact center.
Second, the data on call volumes and handle times is run through a forecasting engine 102 to generate a forecast 103 of anticipated call volumes and handle times for the period to be scheduled. The technique used to create the forecast can be one of a multitude of techniques known in the art, including but not limited to neural network forecasting, statistical forecasting, template-based forecasting, genetic algorithms and neural networks where the weighting functions are determined by genetic algorithms. The forecast is then modified by the inclusion of the anticipated effects on call volume and handling times resulting from upcoming events such as catalog mailings, television advertisements, and so forth. The modified forecast is then used to generate a forecast of agent resource demand 104, based on the forecast and the desired agent occupancy rates 105 (that is, if you need 9 agents on calls and agents are intended to be busy 90% of the time they are on duty, then you will need 10 agents available to handle the expected traffic). Note that “agent resource” usually refers to human agents but can also refer to interactive voice response (IVR) ports against which scripts have been loaded to handle customer interactions automatically. Usually but not necessarily, this agent resource demand forecast is generated in 15 minute increments for the entire schedule period.
Next, a scheduling engine 106, which takes into account a plurality of business rules 107 concerning break policies, shift schedules, maximum and minimum workweeks, meal scheduling, and other related scheduling influences, creates an optimized overall schedule 108 which includes specific work times for each agent. Often agent preferences and vacation requests are included in this scheduling step. These scheduling engines 106, like the forecasting engines 102, use a plurality of well-known optimization techniques to generate a schedule which ensures that the expected traffic is handled within established service level limits while meeting as many of the business rules and agent preference constraints as possible. Finally, during the period the schedule is in effect, an adherence monitor 109 measures conformance to the schedule in real time, usually by integration of the workforce management system with one of the many interaction management engines 110 known in the art (including for example automated call distribution systems, computer-telephony integration systems, e-mail management systems). Usually a graphic display of the current performance of the contact center relative to the forecast is provided, showing where deviations from the forecast and the schedule are occurring, and showing what their effect is on service levels.
In parallel with the emergence in the art of computer-implemented workforce management systems working as described above, and referring to FIG. 2, there have emerged in the last decade a number of very sophisticated routing engines 203 which determine, in real time, how to allocate calls and other tasks to agent resources. These systems generally receive event notification 202 of the arrival of a new interaction (or of a transferred interaction that requires redirection) from the interaction management engine 110. They then execute scripts which can take into account data concerning current agent availability 204, statistical results 205 of recent operations, customer information 206 (such as loyalty level, profitability, identity of agent who last handled, and so forth), and call data 207 such as ANI and DNIS, in order to select which of the available agents is the most appropriate to receive the interaction. When all appropriate agents are busy, the routing engine 203 applies an appropriate treatment to the call, such as playing music or an announcement informing the caller that all agents are busy, and then waits for an agent to become available. When an agent does become available, the routing engine 203 then chooses the most appropriate call to deliver to that agent, from among the plurality of calls awaiting an available agent. It then sends routing instructions 208 to the interaction management engine 110, which relays this information to a media server 200 such as a PBX with ACD or an e-mail server.
In parallel with the emergence in the art of computer-implemented workforce management systems and routing systems working as described above, and referring to FIG. 3, there are many methods in the art for controlling the sequence of tasks performed by contact center agents when handling customer calls. Collectively these systems are often referred to as agent scripting systems, although often the agent scripting function is embedded in larger systems, most commonly customer relationship management systems, of which agent scripting is one component of many. These systems comprise a scripting engine 301 which controls the sequence of activities on a plurality of agent desktops 302. The scripting engine 301 generally receives notification of events relating to calls managed by a media server 300 from the interaction management system 110. These events include, but are not limited to, the Ringing event (announcing call arrival at a particular agent location), the Established event (announcing successful completion of a connection between called parties, the Released event (announcing the termination of a call), and various events concerned with call transfers, conferences, and data updates. The scripting engine 301 executes scripts which take into account the nature of the event received and the data that goes with it concerning the interaction, as well as data concerning current agent activities, customer information obtained from a customer information database 303 (such as loyalty level, profitability, identity of agent who last handled, and so forth), and optionally information and direction received from one or more supervisor stations 304. A typical example of the sequence of events managed by the scripting engine 301 starts with the Ringing event, which is, in most systems known in the art, accompanied by call data and user-defined data such as account number. The scripting engine 301 uses the data received with the Ringing event to retrieve customer data from the customer information database 303. The scripting engine 301 then directs the agent desktop 302 to display a “screen pop” showing the agent who is calling and why, and either automatically sends a request to the interaction management engine 110 to answer the call, or displays an answer button on the agent desktop 302 and waits for the agent to push this button before sending the request. The answer request is transmitted by the interaction management system 110 to the media server 300 which in turn completes the communications channel between the caller and the agent's communications device (telephone, e-mail software, or the like). The scripting engine 301 thereafter supplies the agent desktop 302 with a series of prompts advising the agent what to say, and receives from the agent desktop 302 the results of these actions (such as customer responses to questions). The scripting engine 301 is capable of performing branching logic based on the results of the actions on the agent desktop 302 and, thereby, is able to fully manage a large range of customer interactions, thus allowing the agent to deliver a higher quality of service with a given level of training. The scripting engine 301 can be one of many types well known in the art, including among others compiled computer programs, web-based business rules script servers using ECMAScript, XML, or any of a plurality of scripting languages, or a system in which business rules are stored as records in a database and retrieved and executed as needed.
The problem which the present invention addresses is that these three important technologies in the contact center industry in fact often work against one another. Workforce management products that follow the sequence of steps outlined above (which means all workforce management products in the art) rely on two key implicit assumptions. First, workforce management products assume that the future will behave much like the past—this is a central assumption of the forecasting step. It means that call volumes and call handle times are external variables that do not depend on any other systems in the contact center—they are what they are, and they can be forecast based on historical data. Second, workforce management products implicitly assume call volumes and handling times are independent variables relative to each other. Frustrating these assumptions is the fact that modern, sophisticated routing systems all operate independently of the workforce management systems. Routing engines 203 take the staffing available at the moment, the statistical behavior in the immediate past (usually the last hour or so), and the current call volume, and use this information to make routing decisions. It is easily within the capability of existing routing engines 203 to change call volumes for various skills or activities by diverting some calls away from agents to IVR ports in heavy traffic periods (thus increasing the volume for the IVR and decreasing the volume for the agent population which would have gotten the call). For organizations with multiple sites, calls can be diverted to other sites to avoid congestion. Quite often, routing engines 203 are tasked to dynamically change their target list (the list of agents considered as appropriate for a given interaction), in response to traffic conditions, time the call has been waiting, and so forth. Further frustrating these workforce management forecasting assumptions is the fact that modern, sophisticated agent scripting systems all operate independently of the workforce management systems. Scripting engines 301 walk the agent through potentially complex scripts which have numerous branching points and which, accordingly, introduce a significant amount of volatility into the key parameter of average handle time (AHT). It is not uncommon to have AHT vary by several hundred percent from call to call, even among seemingly simple calls of the same type. And when scripts are changed, even subtly, the changes can often introduce very large changes in the statistical behavior of AHT. Workforce management forecasting engines 102 use historical statistical samples of AHT as a core element of the forecasting engine's 102 algorithm, so if large variations in the behavior occur, the forecasts 103 will inevitably be inaccurate. Also, if agents are prompted to conference in other agents, or to transfer calls to other agents, as part of the scripting engine's 301 logic, then the call volume element of the forecasts 103 used in creating the schedule 108 will be inaccurate. Each of these routing and agent scripting actions acts to invalidate the core assumptions of the workforce management forecasting engine 102, and in fact, the problem invariably gets worse as more sophisticated (i.e., more useful) routing strategies and agent scripts are deployed. Existing workforce management systems were designed with basic ACD (automatic call distribution) queuing in mind and do not work well with modern routing engines 203 or agent scripting engines 301.